From: Florian Müllner Date: Sat, 13 Mar 2021 23:10:56 +0000 (+0100) Subject: shell/app: Only release window ref when we are done X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~616^2^2~108 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=0cf22f4a1b172763c7c98e86ff3f4064305bba40;p=gnome-shell.git shell/app: Only release window ref when we are done We hold a reference to all windows we track for the app. While that reference is unlikely to be the last remaining one, we still shouldn't release it until we are done with the window. Part-of: --- diff --git a/src/shell-app.c b/src/shell-app.c index 17b179cba..d4fe30b0f 100644 --- a/src/shell-app.c +++ b/src/shell-app.c @@ -1115,13 +1115,14 @@ _shell_app_remove_window (ShellApp *app, g_signal_handlers_disconnect_by_func (window, G_CALLBACK(shell_app_on_unmanaged), app); g_signal_handlers_disconnect_by_func (window, G_CALLBACK(shell_app_on_user_time_changed), app); g_signal_handlers_disconnect_by_func (window, G_CALLBACK(shell_app_on_skip_taskbar_changed), app); - g_object_unref (window); app->running_state->windows = g_slist_remove (app->running_state->windows, window); if (!meta_window_is_skip_taskbar (window)) app->running_state->interesting_windows--; shell_app_sync_running_state (app); + g_object_unref (window); + if (app->running_state->windows == NULL) g_clear_pointer (&app->running_state, unref_running_state);